package com.ww.java.generic.method.erase;

import java.util.*;

/**
 * @author wanggw
 * @Date 2023年07月22 0:17
 */
public class LostInform {

    public static void main(String[] args) {
        List<Frob> list = new ArrayList<>();
        Map<Frob, Fnorkle> map = new HashMap<>();
        Quark<Fnorkle> quark = new Quark<>();
        Particle<Long, Double> p = new Particle<>();

        // getTypeParameters()：返回一个TypeVariable对象数组，表示有泛型声明所声明的类型参数
        // 打印结果[E]
        System.out.println(Arrays.toString(list.getClass().getTypeParameters()));
        // 打印结果[K, V]
        System.out.println(Arrays.toString(map.getClass().getTypeParameters()));
        // 打印结果[Q]
        System.out.println(Arrays.toString(quark.getClass().getTypeParameters()));
        // 打印结果[A, B]
        System.out.println(Arrays.toString(p.getClass().getTypeParameters()));

        /**
         * 结论：在泛型代码内部，无法获得任何有关泛型参数类型的信息
         */
    }
}

class Frob {}

class Fnorkle {}

class Quark<Q> {}

class Particle<A, B> {}
